#ifndef _RETRO_DEBUGGER
#define _RETRO_DEBUGGER

namespace Retro
{
  namespace Creator
  {
    namespace Toolbox
    {
      class Debugger : public GUI::Component
      {
      private:
        class Workspace : public Window
        {
        private:
          Debugger&     mDebugger;

        protected:
          virtual VOID  onEraseBackground(Event::EraseBackgroundEvent& iEvent);
          virtual VOID  onMouseDown(Event::MouseEvent& iEvent);
          virtual VOID  onPaint();

        public:

          INL Workspace(Debugger& iDebugger)
            : mDebugger(iDebugger)
          {
          }
        };

        LayoutElement   mLayout;
        LayoutElement*  mLayoutWorkspace;
        WrapWnd         mPlayer;
        WrapWnd         mScript;
        WrapWnd         mOutput;
        Workspace       mWorkspace;

      protected:
        virtual VOID  onCreate(Event::WndCreateEvent& iEvent);
        virtual VOID  onSize(Event::SizeEvent& iEvent);
        virtual VOID  onMouseDown(Event::MouseEvent& iEvent);
        virtual VOID  onMouseUp(Event::MouseEvent& iEvent);
        virtual VOID  onMouseMove(Event::MouseEvent& iEvent);
        virtual VOID  onEraseBackground(Event::EraseBackgroundEvent& iEvent);
        virtual VOID  onPaint();
        virtual VOID  onFocus(Event::FocusEvent& iEvent);

      public:
        VOID  setPlayer(HWND iHandle);

        Debugger();
      };
    } // namespace Toolbox
  } // namespace Creator
} // namespace Retro

#endif
